// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
const db = cloud.database()

// 云函数入口函数
exports.main = async (event, context) => {
  try {
    // 从云开发数据库中查询等待发送的消息列表
    const messages = await db.collection('data-message').where({
        issend: false,
    }).get();
    // 循环消息列表依次处理下发订阅操作
    const sendPromises = messages.data.map(async message => {
      try {
        // 发送订阅消息
        await cloud.openapi.subscribeMessage.send({
          touser: message.touser,
          page: message.page,
          data: { //推送内容
            thing1:{
              value: message.name
            },
            thing4:{
              value: message.weather
            },
            thing3:{
              value: message.date
            },
            thing13:{
              value: message.love
            },
            thing9:{
              value: message.hi
            }
          },
          templateId: message.templateId,
        });
        // 发送成功后将消息的状态改为已发送
        return db.collection('data-message').doc(message._id).update({
          data: {
            issend: true,
          },
        })
      } catch (e) {
        return e
      }
    })
    return Promise.all(sendPromises)
  } catch (err) {
    console.log(err)
    return err
  }
}